import { FlowTypeEnum, ProcessStageCodeEnum, StandardEnum } from '@/constants/pcf';

/**
 * 分页查询可视化模型 入参
 */
export interface GetListVisibleModelParams {
  /**
   * 模型名称或者编码
   */
  nameOrCode?: string;
}

/**
 * 分页查询可视化模型 返回参数
 */
export interface GetListVisibleModelResult {
  /**
   * 模型编号
   */
  modelNo: string;
  /**
   * 模型名称
   */
  modelName: string;
  /**
   * 模型编码
   */
  modelCode: string;
  /**
   * 核算年份
   */
  accountYear: string;
  /**
   * 核算标准
   */
  standard: keyof typeof StandardEnum;
  /**
   * 产品碳足迹排放量
   */
  unitResult: number;
  /**
   * 产品碳足迹排放单位
   */
  referenceFlowUnit: string;
}

/**
 * 查询可视化模型详情信息 返回参数
 */
export interface GetVisibleModelDetailResult extends GetListVisibleModelResult {
  /**
   * 产品碳足迹总排放量
   */
  calcResult: number;
  /**
   * 产品碳足迹总排放量单位
   */
  calcUnit: string;
  /**
   * 核算时间
   */
  calcTime: string;
  /**
   * 规格型号
   */
  specification: string;
  /**
   * 产品产地
   */
  manufactureCountry: string;
  /**
   * 模型图片地址
   */
  fileUrl: string;
  unit: string;
  weight: string;
  /**
   * 功能单位
   */
  functionUnit: string;
}

/**
 * 模型生命阶段排放分布 返回参数
 */
export interface GetModelLifecycleEmissionResult {
  /**
   * 生命阶段
   */
  lifeCycleStage: keyof typeof ProcessStageCodeEnum;
  /**
   * 排放量
   */
  emission: number;
  /**
   * 排放量单位
   */
  emissionUnit: string;
  /**
   * 排放量占比
   */
  proportion: number;
}

/**
 * 模型输入输出流排放 返回参数
 */
export interface GetModelFLowEmissionResult {
  inputFlow: FlowDetailItem[];
  outputFlow: FlowDetailItem[];
}

/**
 * 模型输入输出流排放 flow item
 */
export interface FlowDetailItem {
  /**
   * 流名称
   */
  flowName: string;
  /**
   * 流类型
   */
  flowType: keyof typeof FlowTypeEnum;
  /**
   * 流排放量
   */
  flowEmission: number;
  /**
   * 流排放单位
   */
  flowEmissionUnit: string;
  /**
   * 活动数据
   */
  activityData: string;
  /**
   * 活动数据单位
   */
  activityDataUnit: string;
}

/**
 * 模型零部件排放分布 返回参数
 */
export interface GetModelPartsEmissionResult {
  itemEmissionInfo: {
    /**
     * 流名称
     */
    itemNo: string;
    /**
     * 流类型名称
     */
    itemName: string;
    /**
     * 流排放量
     */
    emission: number;
    /**
     * 流排放单位
     */
    emissionUnit: string;
    /**
     * 占比
     */
    proportion: number;
  }[];
  itemEmissionProportionInfo: {
    /**
     * 流名称
     */
    itemNo: string;
    /**
     * 流类型名称
     */
    itemName: string;
    /**
     * 占比
     */
    proportion: number;
  }[];
}

/**
 * 模型排放对比 返回参数
 */
export interface GetComparisonListResult {
  modelInfoLeft: GetVisibleModelDetailResult;
  modelInfoRight: GetVisibleModelDetailResult;
  stageComparisonInfo: StageComparisonInfo[];
}

/**
 * 阶段对比信息
 */
export interface StageComparisonInfo {
  /**
   * 阶段代码
   */
  lifeCycleStageCode: keyof typeof ProcessStageCodeEnum;
  /**
   * 最大排放量
   */
  maxEmission: number;
  /**
   * 对比列表
   */
  comparisonBaseInfo: {
    /**
     * 明细名称
     */
    name: string;
    /**
     * 左侧排放量
     */
    emissionLeft: number;
    /**
     * 右侧排放量
     */
    emissionRight: number;
    /**
     * 排放量单位
     */
    emissionUnit: string;
  }[];
}
